﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;

namespace Sige
{
	public partial class frmAltaCursos: Form
	{

        SqlConnection cn_superbit;
        DataSet ds = new DataSet();
        string vTurno = "M";


		public frmAltaCursos()
		{
			InitializeComponent();
		}

        private void frmAltaCursos_Load(object sender, EventArgs e)
        {
            Accesoadatos datos = new Accesoadatos();
            string rutaBDSuperbit = datos.getruta();
            cn_superbit = datos.ObtenerConexion(rutaBDSuperbit);
            generarCodigoComision();
            cargarComboCursos();
            cargarComboAulas();
            cn_superbit.Close();
        }


        private void generarCodigoComision()
        {
            string cmdsql = "select max(comision) from comisiones";
            SqlDataAdapter adaptador = new SqlDataAdapter(cmdsql, cn_superbit);

            adaptador.Fill(ds, "CodigoComision");
            string codigoActual = ds.Tables["CodigoComision"].Rows[0][0].ToString();
            int CodigoComision = Convert.ToInt32(codigoActual) + 10;
            txtCodigoComision.Text = CodigoComision.ToString();
        }


        private void cargarComboCursos()
        {
            string cmdsql = "select codigo,nombrecurso,duracion from curso where estado=1 order by nombrecurso";
            SqlDataAdapter adaptador = new SqlDataAdapter(cmdsql, cn_superbit);
            adaptador.Fill(ds, "listadocursos");
            cbxNombreCursos.DataSource = ds.Tables["listadocursos"];
            cbxNombreCursos.DisplayMember = "nombrecurso";
            cbxNombreCursos.ValueMember = "duracion";
            txtDuracionCurso.Text = cbxNombreCursos.SelectedValue.ToString();
        }

        private void cargarComboAulas()
        {
            string cmdsql = "select codigo,capacidad,descripcion from aulas where disponible='true' order by descripcion";
            SqlDataAdapter adaptador = new SqlDataAdapter(cmdsql, cn_superbit);
            adaptador.Fill(ds, "listadoAulas");
            cbxAulas.DataSource = ds.Tables["listadoAulas"];
            cbxAulas.DisplayMember = "descripcion";
            cbxAulas.ValueMember = "codigo";
            txtAulaAsignada.Text = cbxAulas.SelectedValue.ToString();
            obtenerCapacidad();
        }

        private void cargarTurnos(ref string vTurno)
        {
            if (rbtTurnoM.Checked)
                vTurno = "M";
            if (rbtTurnoN.Checked)
                vTurno = "N";
            if (rbtTurnoT.Checked)
                vTurno = "T";
        }


        private void borrarDatosCargadosForm()
        {
            cn_superbit.Open();
            txtCodigoComision.Text = "";
            txtFechaFinalizacion.Text = "";
            txtFechaInicio.Text = "";
            ds.Tables.Remove("CodigoComision");
            generarCodigoComision();
            cn_superbit.Close();
        }

        private void obtenerCapacidad()
        {
            txtAulaAsignada.Text = cbxAulas.SelectedValue.ToString();
            txtCapacidad.Text = " ";
            DataRow[] encontrarcapacidad;

            encontrarcapacidad = ds.Tables["listadoAulas"].Select(" codigo='" + txtAulaAsignada.Text + "'");

            if (encontrarcapacidad.Count() > 0)
                txtCapacidad.Text = encontrarcapacidad[0][1].ToString();
            else
                txtCapacidad.Text = " ";
        }

        private void obtenerCodigoCurso(ref string codigocurso)
        {
            String vnombrecurso = cbxNombreCursos.Text;
            DataRow[] encontrarCodigoCurso;
            encontrarCodigoCurso = ds.Tables["listadocursos"].Select(" nombrecurso='" + vnombrecurso + "'");
            if (encontrarCodigoCurso.Count() > 0)
            {
                codigocurso = encontrarCodigoCurso[0][0].ToString();
            }
            else
                codigocurso = " ";
        }

        private bool validarRangoFechas()
        {
            try
            {
                if (Convert.ToDateTime(txtFechaInicio.Text) > Convert.ToDateTime(txtFechaFinalizacion.Text))
                {
                    return false;
                }
                return true;
            }

            catch
            {
                return false;
            }

        }

        private void grabarCurso()
        {
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = System.Data.CommandType.Text;
            cmd.CommandText = "INSERT comisiones (comision,codigocurso,fechainicio,fechafin,aula,turno,estado) VALUES (@comision,@curso,@fechainicio ,@fechafin ,@aula,@turno ,1)";

            Accesoadatos datos = new Accesoadatos();
            string rutaBDSuperbit = datos.getruta();
            cn_superbit = datos.ObtenerConexion(rutaBDSuperbit);

            cmd.Connection = cn_superbit;
            if (!validarRangoFechas())
            {
                cn_superbit.Close();
                MessageBox.Show("Rangos de Fecha Erronea");
                return;
            }
            string codigocurso = "";
            obtenerCodigoCurso(ref codigocurso);
            cmd.Parameters.AddWithValue("@comision", txtCodigoComision.Text);
            cmd.Parameters.AddWithValue("@curso", codigocurso);
            cmd.Parameters.AddWithValue("@fechainicio", Convert.ToDateTime(txtFechaInicio.Text));
            cmd.Parameters.AddWithValue("@fechafin", Convert.ToDateTime(txtFechaFinalizacion.Text));
            cmd.Parameters.AddWithValue("@aula", txtAulaAsignada.Text);
            cmd.Parameters.AddWithValue("@turno", vTurno);
            try
            {
                cmd.ExecuteNonQuery();
            }
            catch
            {
                cn_superbit.Close();
                MessageBox.Show("No pudo realizarse alta cursos");
                return;
            }
            cn_superbit.Close();
            MessageBox.Show("Alta Curso Realizada");
            borrarDatosCargadosForm();
        }

        private void cbxNombreCursos_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtDuracionCurso.Text = cbxNombreCursos.SelectedValue.ToString();
        }

        private void txtFechaInicio_Click(object sender, EventArgs e)
        {
            CalendarioInicio.Show();
        }

        private void txtFechaInicio_Leave(object sender, EventArgs e)
        {
            CalendarioInicio.Hide();
        }

        private void txtFechaFinalizacion_Click(object sender, EventArgs e)
        {
             CalendarioFinalizacion.Show();
        }

        private void txtFechaFinalizacion_Leave(object sender, EventArgs e)
        {
            CalendarioFinalizacion.Hide();
        }

        private void CalendarioInicio_DateChanged(object sender, DateRangeEventArgs e)
        {
            txtFechaInicio.Text = CalendarioInicio.SelectionStart.ToShortDateString();
        }

        private void CalendarioInicio_DateSelected(object sender, DateRangeEventArgs e)
        {
            txtFechaInicio.Text = CalendarioInicio.SelectionStart.ToShortDateString();
        }

        private void CalendarioFinalizacion_DateChanged(object sender, DateRangeEventArgs e)
        {
            txtFechaFinalizacion.Text = CalendarioFinalizacion.SelectionEnd.ToShortDateString();
        }

        private void CalendarioFinalizacion_DateSelected(object sender, DateRangeEventArgs e)
        {
            txtFechaFinalizacion.Text = CalendarioFinalizacion.SelectionEnd.ToShortDateString();
        }

        private void cbxAulas_SelectedIndexChanged(object sender, EventArgs e)
        {
            obtenerCapacidad();
        }

        private void rbtTurnoM_CheckedChanged(object sender, EventArgs e)
        {
            cargarTurnos(ref vTurno);
        }

        private void rbtTurnoT_CheckedChanged(object sender, EventArgs e)
        {
            cargarTurnos(ref vTurno);
        }

        private void rbtTurnoN_CheckedChanged(object sender, EventArgs e)
        {
            cargarTurnos(ref vTurno);
        }

        private void btnAtras_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            DialogResult sms = MessageBox.Show("Esta seguro desea salir de la aplicacion ?", "Salir de la Aplicacion ", MessageBoxButtons.YesNo);
            if (sms == DialogResult.Yes) // si devuelve Yes salgo aplicacion
                Application.Exit();
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            DialogResult sms = MessageBox.Show("Esta seguro desea cancelar ?","Cancelacion Alta Curso ", MessageBoxButtons.YesNo);
            if (sms == DialogResult.Yes) // si devuelve Yes cancelo             
                borrarDatosCargadosForm();
                MessageBox.Show("Alta Cancelada ","Cancelacion Alta Curso ", MessageBoxButtons.OK);
        }

        private void btnGrabar_Click(object sender, EventArgs e)
        {
            grabarCurso();
        }
	}
}
